<?php


namespace api\modules\v1\controllers\buss;

use api\controllers\OnAuthController;
use api\modules\v1\forms\buss\ToolForm;
use api\modules\v1\forms\buss\ToolWaterForm;
use common\helpers\CommonHelper;
use services\buss\ToolWaterService;
use Yii;


class ToolWaterController extends OnAuthController
{
    public $modelClass = '';

    /**
     * @api {get} /v1/buss/tool-water/list  水印列表
     * @apiName list
     * @apiGroup ToolWater
     * @apiUse CommonParam
     *
     * @apiParam {String} page              页码
     * @apiParam {String} pageSize          每页展示数
     *
     * @apiSuccess {Object}  data                       返回数据
     * @apiSuccess {Number}  data.page                  页码
     * @apiSuccess {Number}  data.pageSize              每页展示数
     * @apiSuccess {Number}  data.total                 总数
     * @apiSuccess {Array}   data.list                  列表数据
     * @apiSuccess {Number}  data.list.id               ID
     * @apiSuccess {String}  data.list.project_name     项目名称
     * @apiSuccess {Number}  data.list.type             类型【1文字、2图片】
     * @apiSuccess {String}  data.list.type_str         类型
     * @apiSuccess {String}  data.list.text             文字
     * @apiSuccess {String}  data.list.file_url         图片url
     * @apiSuccess {Number}  data.list.alpha            透明度【单位：%】
     * @apiSuccess {String}  data.list.created_member_name 创建人
     * @apiSuccess {String}  data.list.created_at_str   创建时间
     */
    public function actionList()
    {
        $params = Yii::$app->request->get();

        $page = $params['page'] ?? 1;
        $pageSize = $params['pageSize'] ?? 10;

        $service = new ToolWaterService();
        // 查询结果
        $data = $service->getListPage($params, (int)$page, (int)$pageSize);
        // 格式化数据
        $data['list'] = $service->getListPageFormat($data['list']);
        return $data;
    }

    /**
     * @api {get} /v1/buss/tool-water/edit-info 水印详情【新增、编辑】
     * @apiName edit-info
     * @apiGroup ToolWater
     * @apiUse CommonParam
     *
     * @apiParam {Number} id 水印ID【新增ID不传，编辑必传ID】
     *
     * @apiSuccess {Object} data                    返回数据
     * @apiSuccess {Number} data.id                 ID
     * @apiSuccess {Number} data.project_id         项目ID
     * @apiSuccess {String} data.type               类型【1文字、2图片】
     * @apiSuccess {Array}  data.text               文字
     * @apiSuccess {String} data.file               文件【传参用】
     * @apiSuccess {String} data.file_url           文件url
     * @apiSuccess {Array}  data.alpha              透明度【单位：%】
     * @apiSuccess {Array}  data.support_image_type 上传图片支持格式
     * @apiSuccess {Object} data.condition          筛选条件
     * @apiSuccess {Array}  data.condition.project  项目
     * @apiSuccess {Array}  data.condition.type     类型
     */
    public function actionEditInfo()
    {
        $params = Yii::$app->request->get();
        $id = $params['id'] ?? 0;

        // 查询结果
        $service = new ToolWaterService();
        return $service->getEditInfo((int)$id);
    }

    /**
     * @api {post} /v1/buss/tool-water/create 新增水印
     * @apiName create
     * @apiGroup ToolWater
     * @apiUse CommonParam
     *
     * @apiBody {Number} project_id     项目ID
     * @apiBody {Number} type           类型【1文字、2图片】
     * @apiBody {String} text           文字【type=1必填】
     * @apiBody {String} file           图片【type=2必填】
     * @apiBody {Number} alpha          透明度
     *
     * @apiSuccess {Object} data            返回数据
     * @apiSuccess {Number} data.id         水印ID
     */
    public function actionCreate()
    {
        $params = Yii::$app->request->post();

        $model = new ToolWaterForm();
        $model->setScenario('create');
        $model->attributes = $params;
        if (!$model->validate()) {
            // 返回数据验证失败
            return CommonHelper::api(422, $this->getError($model));
        }

        $service = new ToolWaterService();
        return $service->create($model);
    }

    /**
     * @api {post} /v1/buss/tool-water/update 编辑水印
     * @apiName update
     * @apiGroup ToolWater
     * @apiUse CommonParam
     *
     * @apiBody {Number} id             水印ID
     * @apiBody {Number} project_id     项目ID
     * @apiBody {Number} type           类型【1文字、2图片】
     * @apiBody {String} text           文字【type=1必填】
     * @apiBody {String} file           图片【type=2必填】
     * @apiBody {Number} alpha          透明度
     *
     * @apiSuccess {Object} data            返回数据
     * @apiSuccess {Number} data.id         水印ID
     */
    public function actionUpdate()
    {
        $params = Yii::$app->request->post();

        $model = new ToolWaterForm();
        $model->setScenario('edit');
        $model->attributes = $params;
        if (!$model->validate()) {
            // 返回数据验证失败
            return CommonHelper::api(422, $this->getError($model));
        }

        $service = new ToolWaterService();
        return $service->edit($model);
    }

    /**
     * @api {post} /v1/buss/tool-water/delete 删除水印
     * @apiName delete
     * @apiGroup ToolWater
     * @apiUse CommonParam
     *
     * @apiBody {Number} id                水印ID
     *
     * @apiSuccess {Object} data            返回数据
     * @apiSuccess {Number} data.id         水印ID
     */
    public function actionDelete()
    {
        $params = Yii::$app->request->post();

        $model = new ToolWaterForm();
        $model->setScenario('delete');
        $model->attributes = $params;
        if (!$model->validate()) {
            // 返回数据验证失败
            return CommonHelper::api(422, $this->getError($model));
        }

        $service = new ToolWaterService();
        return $service->delete($model);
    }
}
